home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 October / DPPCPRO1005.ISO / Download / Web Developer / webdeveloper.xpi / chrome / webdeveloper.jar / content / webdeveloper / options / options.js < prev    next >
Encoding:
Text File  |  2005-03-21  |  52.9 KB  |  1,182 lines

  1. var webdeveloper_optionsDataBoolean = new Array();
  2. var webdeveloper_optionsDataInteger = new Array();
  3. var webdeveloper_optionsDataString  = new Array();
  4. var webdeveloper_resizeDescription  = null;
  5. var webdeveloper_resizeHeight       = null;
  6. var webdeveloper_resizeWidth        = null;
  7. var webdeveloper_toolDescription    = null;
  8. var webdeveloper_toolKey            = null;
  9. var webdeveloper_toolURL            = null;
  10.  
  11. // Adds a resize option
  12. function webdeveloper_addResize()
  13. {
  14.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  15.     const resizeBox    = pageDocument.getElementById("webdeveloper-listbox");
  16.  
  17.     window.openDialog("chrome://webdeveloper/content/options/dialogs/resize.xul", "webdeveloper-resize-dialog", "centerscreen,chrome,modal", "add");
  18.  
  19.     // If the description, height and width are set
  20.     if(webdeveloper_resizeDescription && webdeveloper_resizeHeight && webdeveloper_resizeWidth)
  21.     {
  22.         var listCell = pageDocument.createElement("listcell");
  23.         var listItem = pageDocument.createElement("listitem");
  24.  
  25.         listCell.setAttribute("label", webdeveloper_resizeDescription);
  26.         listItem.appendChild(listCell);
  27.  
  28.         listCell = pageDocument.createElement("listcell");
  29.         listCell.setAttribute("label", webdeveloper_resizeWidth);
  30.         listItem.appendChild(listCell);
  31.  
  32.         listCell = pageDocument.createElement("listcell");
  33.         listCell.setAttribute("label", webdeveloper_resizeHeight);
  34.         listItem.appendChild(listCell);
  35.  
  36.         resizeBox.selectItem(resizeBox.appendChild(listItem));
  37.     }
  38. }
  39.  
  40. // Adds a tool
  41. function webdeveloper_addTool()
  42. {
  43.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  44.     const toolBox      = pageDocument.getElementById("webdeveloper-listbox");
  45.  
  46.     window.openDialog("chrome://webdeveloper/content/options/dialogs/tool.xul", "webdeveloper-tool-dialog", "centerscreen,chrome,modal", "add");
  47.  
  48.     // If the description and URL are set
  49.     if(webdeveloper_toolDescription && webdeveloper_toolURL)
  50.     {
  51.         var listCell = pageDocument.createElement("listcell");
  52.         var listItem = pageDocument.createElement("listitem");
  53.  
  54.         listCell.setAttribute("label", webdeveloper_toolDescription);
  55.         listItem.appendChild(listCell);
  56.  
  57.         listCell = pageDocument.createElement("listcell");
  58.         listCell.setAttribute("label", webdeveloper_toolURL);
  59.         listCell.setAttribute("crop", "end");
  60.         listItem.appendChild(listCell);
  61.  
  62.         listCell = pageDocument.createElement("listcell");
  63.         listCell.setAttribute("label", webdeveloper_toolKey);
  64.         listItem.appendChild(listCell);
  65.  
  66.         toolBox.selectItem(toolBox.appendChild(listItem));
  67.     }
  68. }
  69.  
  70. // Handles changing the options page
  71. function webdeveloper_changePage(pageList)
  72. {
  73.     webdeveloper_storeOptions();
  74.  
  75.     document.getElementById("webdeveloper-options-iframe").setAttribute("src", pageList.selectedItem.value);
  76. }
  77.  
  78. // Deletes a resize option
  79. function webdeveloper_deleteResize()
  80. {
  81.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  82.     const resizeBox    = pageDocument.getElementById("webdeveloper-listbox");
  83.     const selectedItem = resizeBox.selectedItem;
  84.     const stringBundle = document.getElementById("webdeveloper-string-bundle");
  85.  
  86.     // If an item is selected and the deletion is confirmed
  87.     if(selectedItem && confirm(stringBundle.getString("webdeveloper_resizeDeleteConfirmation")))
  88.     {
  89.         resizeBox.removeChild(selectedItem);
  90.     }
  91. }
  92.  
  93. // Deletes a tool
  94. function webdeveloper_deleteTool()
  95. {
  96.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  97.     const stringBundle = document.getElementById("webdeveloper-string-bundle");
  98.     const toolBox      = pageDocument.getElementById("webdeveloper-listbox");
  99.     const selectedItem = toolBox.selectedItem;
  100.  
  101.     // If an item is selected and the deletion is confirmed
  102.     if(selectedItem && confirm(stringBundle.getString("webdeveloper_toolDeleteConfirmation")))
  103.     {
  104.         toolBox.removeChild(selectedItem);
  105.     }
  106. }
  107.  
  108. // Edits a resize option
  109. function webdeveloper_editResize()
  110. {
  111.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  112.     const resizeBox    = pageDocument.getElementById("webdeveloper-listbox");
  113.     const selectedItem = resizeBox.selectedItem;
  114.  
  115.     // If an option is selected
  116.     if(selectedItem)
  117.     {
  118.         window.openDialog("chrome://webdeveloper/content/options/dialogs/resize.xul", "webdeveloper-resize-dialog", "centerscreen,chrome,modal", "edit", selectedItem.childNodes[0].getAttribute("label"), selectedItem.childNodes[1].getAttribute("label"), selectedItem.childNodes[2].getAttribute("label"));
  119.  
  120.         // If the description, height and width are set
  121.         if(webdeveloper_resizeDescription && webdeveloper_resizeHeight && webdeveloper_resizeWidth)
  122.         {
  123.             var listCell = pageDocument.createElement("listcell");
  124.  
  125.             webdeveloper_removeAllChildNodes(selectedItem);
  126.  
  127.             listCell.setAttribute("label", webdeveloper_resizeDescription);
  128.             selectedItem.appendChild(listCell);
  129.  
  130.             listCell = pageDocument.createElement("listcell");
  131.             listCell.setAttribute("label", webdeveloper_resizeWidth);
  132.             selectedItem.appendChild(listCell);
  133.  
  134.             listCell = pageDocument.createElement("listcell");
  135.             listCell.setAttribute("label", webdeveloper_resizeHeight);
  136.             selectedItem.appendChild(listCell);
  137.         }
  138.     }
  139. }
  140.  
  141. // Edits a tool
  142. function webdeveloper_editTool()
  143. {
  144.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  145.     const toolBox      = pageDocument.getElementById("webdeveloper-listbox");
  146.     const selectedItem = toolBox.selectedItem;
  147.  
  148.     // If an option is selected
  149.     if(selectedItem)
  150.     {
  151.         window.openDialog("chrome://webdeveloper/content/options/dialogs/tool.xul", "webdeveloper-tool-dialog", "centerscreen,chrome,modal", "edit", selectedItem.childNodes[0].getAttribute("label"), selectedItem.childNodes[1].getAttribute("label"), selectedItem.childNodes[2].getAttribute("label"));
  152.  
  153.         // If the description and url are set
  154.         if(webdeveloper_toolDescription && webdeveloper_toolURL)
  155.         {
  156.             var listCell = pageDocument.createElement("listcell");
  157.  
  158.             webdeveloper_removeAllChildNodes(selectedItem);
  159.  
  160.             listCell.setAttribute("label", webdeveloper_toolDescription);
  161.             selectedItem.appendChild(listCell);
  162.  
  163.             listCell = pageDocument.createElement("listcell");
  164.             listCell.setAttribute("label", webdeveloper_toolURL);
  165.             listCell.setAttribute("crop", "end");
  166.             selectedItem.appendChild(listCell);
  167.  
  168.             listCell = pageDocument.createElement("listcell");
  169.             listCell.setAttribute("label", webdeveloper_toolKey);
  170.             selectedItem.appendChild(listCell);
  171.         }
  172.     }
  173. }
  174.  
  175. // Initializes the colors page
  176. function webdeveloper_initializeColors()
  177. {
  178.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  179.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  180.  
  181.     // If the feature tooltip text color is set
  182.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.text"] != "undefined")
  183.     {
  184.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.text").color = webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.text"].trim();
  185.     }
  186.     else if(preferencesService.prefHasUserValue("webdeveloper.color.feature.tooltip.text"))
  187.     {
  188.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.text").color = preferencesService.getComplexValue("webdeveloper.color.feature.tooltip.text", Components.interfaces.nsISupportsString).data.trim();
  189.     }
  190.  
  191.     // If the feature tooltip background color is set
  192.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.background"] != "undefined")
  193.     {
  194.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.background").color = webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.background"].trim();
  195.     }
  196.     else if(preferencesService.prefHasUserValue("webdeveloper.color.feature.tooltip.background"))
  197.     {
  198.         pageDocument.getElementById("webdeveloper.color.feature.tooltip.background").color = preferencesService.getComplexValue("webdeveloper.color.feature.tooltip.background", Components.interfaces.nsISupportsString).data.trim();
  199.     }
  200.  
  201.     // If the feature tooltip opacity is set
  202.     if(typeof webdeveloper_optionsDataString["webdeveloper.feature.tooltip.opacity"] != "undefined")
  203.     {
  204.         pageDocument.getElementById("webdeveloper.feature.tooltip.opacity").value = webdeveloper_optionsDataString["webdeveloper.feature.tooltip.opacity"];
  205.     }
  206.     else if(preferencesService.prefHasUserValue("webdeveloper.feature.tooltip.opacity"))
  207.     {
  208.         pageDocument.getElementById("webdeveloper.feature.tooltip.opacity").value = preferencesService.getComplexValue("webdeveloper.feature.tooltip.opacity", Components.interfaces.nsISupportsString).data.trim();
  209.     }
  210.  
  211.     // If the class text color is set
  212.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.class.text"] != "undefined")
  213.     {
  214.         pageDocument.getElementById("webdeveloper.color.class.text").color = webdeveloper_optionsDataString["webdeveloper.color.class.text"].trim();
  215.     }
  216.     else if(preferencesService.prefHasUserValue("webdeveloper.color.class.text"))
  217.     {
  218.         pageDocument.getElementById("webdeveloper.color.class.text").color = preferencesService.getComplexValue("webdeveloper.color.class.text", Components.interfaces.nsISupportsString).data.trim();
  219.     }
  220.  
  221.     // If the class background color is set
  222.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.class.background"] != "undefined")
  223.     {
  224.         pageDocument.getElementById("webdeveloper.color.class.background").color = webdeveloper_optionsDataString["webdeveloper.color.class.background"].trim();
  225.     }
  226.     else if(preferencesService.prefHasUserValue("webdeveloper.color.class.background"))
  227.     {
  228.         pageDocument.getElementById("webdeveloper.color.class.background").color = preferencesService.getComplexValue("webdeveloper.color.class.background", Components.interfaces.nsISupportsString).data.trim();
  229.     }
  230.  
  231.     // If the ID text color is set
  232.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.text"] != "undefined")
  233.     {
  234.         pageDocument.getElementById("webdeveloper.color.id.text").color = webdeveloper_optionsDataString["webdeveloper.color.id.text"].trim();
  235.     }
  236.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.text"))
  237.     {
  238.         pageDocument.getElementById("webdeveloper.color.id.text").color = preferencesService.getComplexValue("webdeveloper.color.id.text", Components.interfaces.nsISupportsString).data.trim();
  239.     }
  240.  
  241.     // If the ID background color is set
  242.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.background"] != "undefined")
  243.     {
  244.         pageDocument.getElementById("webdeveloper.color.id.background").color = webdeveloper_optionsDataString["webdeveloper.color.id.background"].trim();
  245.     }
  246.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.background"))
  247.     {
  248.         pageDocument.getElementById("webdeveloper.color.id.background").color = preferencesService.getComplexValue("webdeveloper.color.id.background", Components.interfaces.nsISupportsString).data.trim();
  249.     }
  250.  
  251.     // If the ID and class text color is set
  252.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.class.text"] != "undefined")
  253.     {
  254.         pageDocument.getElementById("webdeveloper.color.id.class.text").color = webdeveloper_optionsDataString["webdeveloper.color.id.class.text"].trim();
  255.     }
  256.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.class.text"))
  257.     {
  258.         pageDocument.getElementById("webdeveloper.color.id.class.text").color = preferencesService.getComplexValue("webdeveloper.color.id.class.text", Components.interfaces.nsISupportsString).data.trim();
  259.     }
  260.  
  261.     // If the ID and class background color is set
  262.     if(typeof webdeveloper_optionsDataString["webdeveloper.color.id.class.background"] != "undefined")
  263.     {
  264.         pageDocument.getElementById("webdeveloper.color.id.class.background").color = webdeveloper_optionsDataString["webdeveloper.color.id.class.background"].trim();
  265.     }
  266.     else if(preferencesService.prefHasUserValue("webdeveloper.color.id.class.background"))
  267.     {
  268.         pageDocument.getElementById("webdeveloper.color.id.class.background").color = preferencesService.getComplexValue("webdeveloper.color.id.class.background", Components.interfaces.nsISupportsString).data.trim();
  269.     }
  270. }
  271.  
  272. // Initializes the forms page
  273. function webdeveloper_initializeForms()
  274. {
  275.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  276.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  277.  
  278.     // If the populate form fields email preference is set
  279.     if(typeof webdeveloper_optionsDataString["webdeveloper.populate.form.fields.email"] != "undefined")
  280.     {
  281.         pageDocument.getElementById("webdeveloper.populate.form.fields.email").value = webdeveloper_optionsDataString["webdeveloper.populate.form.fields.email"];
  282.     }
  283.     else if(preferencesService.prefHasUserValue("webdeveloper.populate.form.fields.email"))
  284.     {
  285.         pageDocument.getElementById("webdeveloper.populate.form.fields.email").value = preferencesService.getComplexValue("webdeveloper.populate.form.fields.email", Components.interfaces.nsISupportsString).data.trim();
  286.     }
  287. }
  288.  
  289. // Initializes the general page
  290. function webdeveloper_initializeGeneral()
  291. {
  292.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  293.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  294.  
  295.     // If the hide menu preference is set
  296.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.menu.hide"] != "undefined")
  297.     {
  298.         pageDocument.getElementById("webdeveloper.menu.hide").checked = webdeveloper_optionsDataBoolean["webdeveloper.menu.hide"];
  299.     }
  300.     else if(preferencesService.prefHasUserValue("webdeveloper.menu.hide"))
  301.     {
  302.         pageDocument.getElementById("webdeveloper.menu.hide").checked = preferencesService.getBoolPref("webdeveloper.menu.hide");
  303.     }
  304.     else
  305.     {
  306.         pageDocument.getElementById("webdeveloper.menu.hide").checked = false;
  307.     }
  308.  
  309.     // If the hide context menu preference is set
  310.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.context.hide"] != "undefined")
  311.     {
  312.         pageDocument.getElementById("webdeveloper.context.hide").checked = webdeveloper_optionsDataBoolean["webdeveloper.context.hide"];
  313.     }
  314.     else if(preferencesService.prefHasUserValue("webdeveloper.context.hide"))
  315.     {
  316.         pageDocument.getElementById("webdeveloper.context.hide").checked = preferencesService.getBoolPref("webdeveloper.context.hide");
  317.     }
  318.     else
  319.     {
  320.         pageDocument.getElementById("webdeveloper.context.hide").checked = false;
  321.     }
  322.  
  323.     // If the show outlined element names preference is set
  324.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.outline.show.element.names"] != "undefined")
  325.     {
  326.         pageDocument.getElementById("webdeveloper.outline.show.element.names").checked = webdeveloper_optionsDataBoolean["webdeveloper.outline.show.element.names"];
  327.     }
  328.     else if(preferencesService.prefHasUserValue("webdeveloper.outline.show.element.names"))
  329.     {
  330.         pageDocument.getElementById("webdeveloper.outline.show.element.names").checked = preferencesService.getBoolPref("webdeveloper.outline.show.element.names");
  331.     }
  332.     else
  333.     {
  334.         pageDocument.getElementById("webdeveloper.outline.show.element.names").checked = false;
  335.     }
  336.  
  337.     // If the toolbar icons preference is set
  338.     if(typeof webdeveloper_optionsDataString["webdeveloper.toolbar.icons"] != "undefined")
  339.     {
  340.         pageDocument.getElementById("webdeveloper.toolbar.icons").value = webdeveloper_optionsDataString["webdeveloper.toolbar.icons"];
  341.     }
  342.     else if(preferencesService.prefHasUserValue("webdeveloper.toolbar.icons"))
  343.     {
  344.         pageDocument.getElementById("webdeveloper.toolbar.icons").value = preferencesService.getComplexValue("webdeveloper.toolbar.icons", Components.interfaces.nsISupportsString).data.trim();
  345.     }
  346.     else
  347.     {
  348.         pageDocument.getElementById("webdeveloper.toolbar.icons").selectedIndex = 0;
  349.     }
  350.  
  351.     // If the open tabs preference is set
  352.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.tabs"] != "undefined")
  353.     {
  354.         pageDocument.getElementById("webdeveloper.open.tabs").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.tabs"];
  355.     }
  356.     else if(preferencesService.prefHasUserValue("webdeveloper.open.tabs"))
  357.     {
  358.         pageDocument.getElementById("webdeveloper.open.tabs").checked = preferencesService.getBoolPref("webdeveloper.open.tabs");
  359.     }
  360.  
  361.     // If the open tabs background preference is set
  362.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.tabs.background"] != "undefined")
  363.     {
  364.         pageDocument.getElementById("webdeveloper.open.tabs.background").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.tabs.background"];
  365.     }
  366.     else if(preferencesService.prefHasUserValue("webdeveloper.open.tabs.background"))
  367.     {
  368.         pageDocument.getElementById("webdeveloper.open.tabs.background").checked = preferencesService.getBoolPref("webdeveloper.open.tabs.background");
  369.     }
  370.     else
  371.     {
  372.         pageDocument.getElementById("webdeveloper.open.tabs.background").checked = false;
  373.     }
  374.  
  375.     // If the view source in tab preference is set
  376.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.view.source.tab"] != "undefined")
  377.     {
  378.         pageDocument.getElementById("webdeveloper.view.source.tab").checked = webdeveloper_optionsDataBoolean["webdeveloper.view.source.tab"];
  379.     }
  380.     else if(preferencesService.prefHasUserValue("webdeveloper.view.source.tab"))
  381.     {
  382.         pageDocument.getElementById("webdeveloper.view.source.tab").checked = preferencesService.getBoolPref("webdeveloper.view.source.tab");
  383.     }
  384.     else
  385.     {
  386.         pageDocument.getElementById("webdeveloper.view.source.tab").checked = false;
  387.     }
  388.  
  389.     pageDocument.getElementById("webdeveloper.open.tabs.background").disabled = !pageDocument.getElementById("webdeveloper.open.tabs").checked;
  390. }
  391.  
  392. // Initializes the JavaScript page
  393. function webdeveloper_initializeJavaScript()
  394. {
  395.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  396.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  397.  
  398.     // If the JavaScript options strict preference is set
  399.     if(typeof webdeveloper_optionsDataBoolean["javascript.options.strict"] != "undefined")
  400.     {
  401.         pageDocument.getElementById("webdeveloper.javascript.options.strict").checked = webdeveloper_optionsDataBoolean["javascript.options.strict"];
  402.     }
  403.     else if(preferencesService.prefHasUserValue("javascript.options.strict"))
  404.     {
  405.         pageDocument.getElementById("webdeveloper.javascript.options.strict").checked = preferencesService.getBoolPref("javascript.options.strict");
  406.     }
  407.     else
  408.     {
  409.         pageDocument.getElementById("webdeveloper.javascript.options.strict").checked = false;
  410.     }
  411.  
  412.     // If the open JavaScript console warning preference is set
  413.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.warning"] != "undefined")
  414.     {
  415.         pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.warning"];
  416.     }
  417.     else if(preferencesService.prefHasUserValue("webdeveloper.open.javascript.console.warning"))
  418.     {
  419.         pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked = preferencesService.getBoolPref("webdeveloper.open.javascript.console.warning");
  420.     }
  421.     else
  422.     {
  423.         pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked = false;
  424.     }
  425.  
  426.     // If the open JavaScript console error preference is set
  427.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.error"] != "undefined")
  428.     {
  429.         pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked = webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.error"];
  430.     }
  431.     else if(preferencesService.prefHasUserValue("webdeveloper.open.javascript.console.error"))
  432.     {
  433.         pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked = preferencesService.getBoolPref("webdeveloper.open.javascript.console.error");
  434.     }
  435.     else
  436.     {
  437.         pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked = false;
  438.     }
  439. }
  440.  
  441. // Initializes the keys page
  442. function webdeveloper_initializeKeys()
  443. {
  444.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  445.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  446.  
  447.     var mainDocument = null;
  448.  
  449.     // If there is a parent window
  450.     if(window.opener)
  451.     {
  452.         // If there is a grand parent window
  453.         if(window.opener.opener)
  454.         {
  455.             mainDocument = window.opener.opener.document;
  456.         }
  457.         else
  458.         {
  459.             mainDocument = window.opener.document;
  460.         }
  461.     }
  462.     else
  463.     {
  464.         mainDocument = document;
  465.     }
  466.  
  467.     // If a main document was found
  468.     if(mainDocument)
  469.     {
  470.         const rows         = pageDocument.getElementById("webdeveloper-key-rows");
  471.         const stringBundle = document.getElementById("webdeveloper-string-bundle");
  472.  
  473.         var description = null;
  474.         var hbox        = null;
  475.         var id          = null;
  476.         var label       = null;
  477.         var key         = null;
  478.         var keys        = null;
  479.         var keySet      = mainDocument.getElementById("mainKeyset");
  480.         var row         = null;
  481.         var spacer      = null;
  482.         var textbox     = null;
  483.  
  484.         // If the key set was not found
  485.         if(!keySet)
  486.         {
  487.             keySet = mainDocument.getElementById("navKeys");
  488.         }
  489.  
  490.         // If the key set was found
  491.         if(keySet)
  492.         {
  493.             keys = keySet.childNodes;
  494.  
  495.             // Loop through the keys
  496.             for(var i = 0; i < keys.length; i++)
  497.             {
  498.                 key = keys.item(i);
  499.  
  500.                 // If the key has and id attribute starting with webdeveloper-
  501.                 if(key.hasAttribute("id") && key.getAttribute("id").indexOf("webdeveloper-") == 0)
  502.                 {
  503.                     description = pageDocument.createElement("description");
  504.                     hbox        = pageDocument.createElement("hbox");
  505.                     id          = key.getAttribute("id").split("-").join(".");
  506.                     label       = pageDocument.createElement("label");
  507.                     row         = pageDocument.createElement("row");
  508.                     spacer      = pageDocument.createElement("spacer");
  509.                     textbox     = pageDocument.createElement("textbox");
  510.  
  511.                     label.setAttribute("value", key.getAttribute("label"));
  512.                     label.setAttribute("control", id);
  513.                     row.appendChild(label);
  514.  
  515.                     spacer.setAttribute("class", "small-spacer");
  516.                     row.appendChild(spacer);
  517.  
  518.                     description.setAttribute("value", stringBundle.getString("webdeveloper_keyboardShortcutsModifier"));
  519.                     hbox.appendChild(description);
  520.  
  521.                     // If the option is defined
  522.                     if(typeof webdeveloper_optionsDataString[id] != "undefined")
  523.                     {
  524.                         textbox.setAttribute("value", webdeveloper_optionsDataString[id].trim());
  525.                     }
  526.                     else if(preferencesService.prefHasUserValue(id))
  527.                     {
  528.                         textbox.setAttribute("value", preferencesService.getComplexValue(id, Components.interfaces.nsISupportsString).data.trim());
  529.                     }
  530.  
  531.                     textbox.setAttribute("id", id);
  532.                     textbox.setAttribute("size", "1");
  533.                     textbox.setAttribute("maxlength", "1");
  534.                     hbox.appendChild(textbox);
  535.  
  536.                     hbox.setAttribute("align", "center");
  537.                     row.appendChild(hbox);
  538.  
  539.                     row.setAttribute("align", "center");
  540.                     rows.appendChild(row);
  541.                 }
  542.             }
  543.         }
  544.     }
  545. }
  546.  
  547. // Initializes the options dialog
  548. function webdeveloper_initializeOptions()
  549. {
  550.     const selectedPage = document.getElementById("webdeveloper-page-list").selectedItem.value;
  551.  
  552.     // If this is the general page
  553.     if(selectedPage.indexOf("general") != -1)
  554.     {
  555.         webdeveloper_initializeGeneral();
  556.     }
  557.     else if(selectedPage.indexOf("colors") != -1)
  558.     {
  559.         webdeveloper_initializeColors();
  560.     }
  561.     else if(selectedPage.indexOf("forms") != -1)
  562.     {
  563.         webdeveloper_initializeForms();
  564.     }
  565.     else if(selectedPage.indexOf("javascript") != -1)
  566.     {
  567.         webdeveloper_initializeJavaScript();
  568.     }
  569.     else if(selectedPage.indexOf("keys") != -1)
  570.     {
  571.         webdeveloper_initializeKeys();
  572.     }
  573.     else if(selectedPage.indexOf("resize") != -1)
  574.     {
  575.         webdeveloper_initializeResize();
  576.     }
  577.     else if(selectedPage.indexOf("sidebar") != -1)
  578.     {
  579.         webdeveloper_initializeSidebar();
  580.     }
  581.     else if(selectedPage.indexOf("tidied_html") != -1)
  582.     {
  583.         webdeveloper_initializeTidiedHTML();
  584.     }
  585.     else if(selectedPage.indexOf("tools") != -1)
  586.     {
  587.         webdeveloper_initializeTools();
  588.     }
  589. }
  590.  
  591. // Initializes the resize page
  592. function webdeveloper_initializeResize()
  593. {
  594.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  595.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  596.     const resizeBox          = pageDocument.getElementById("webdeveloper-listbox");
  597.  
  598.     var description      = null;
  599.     var descriptionValue = null;
  600.     var height           = null;
  601.     var heightValue      = null;
  602.     var listCell         = null;
  603.     var listItem         = null;
  604.     var resizeCount      = 0;
  605.     var width            = null;
  606.     var widthValue       = null;
  607.  
  608.     // If the resize count preference is set
  609.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.resize.count"] != "undefined")
  610.     {
  611.         resizeCount = webdeveloper_optionsDataInteger["webdeveloper.resize.count"];
  612.     }
  613.     else if(preferencesService.prefHasUserValue("webdeveloper.resize.count"))
  614.     {
  615.         resizeCount = preferencesService.getIntPref("webdeveloper.resize.count");
  616.     }
  617.  
  618.     // Loop through the possible resize options
  619.     for(var i = 1; i <= resizeCount; i++)
  620.     {
  621.         description = "webdeveloper.resize." + i + ".description";
  622.         height      = "webdeveloper.resize." + i + ".height";
  623.         width       = "webdeveloper.resize." + i + ".width";
  624.  
  625.         // If the description is set
  626.         if(typeof webdeveloper_optionsDataString[description] != "undefined")
  627.         {
  628.             descriptionValue = webdeveloper_optionsDataString[description].trim();
  629.         }
  630.         else if(preferencesService.prefHasUserValue(description))
  631.         {
  632.             descriptionValue = preferencesService.getComplexValue(description, Components.interfaces.nsISupportsString).data.trim();
  633.         }
  634.         else
  635.         {
  636.             descriptionValue = null;
  637.         }
  638.  
  639.         // If the width is set
  640.         if(typeof webdeveloper_optionsDataInteger[width] != "undefined")
  641.         {
  642.             widthValue = webdeveloper_optionsDataInteger[width];
  643.         }
  644.         else if(preferencesService.prefHasUserValue(width))
  645.         {
  646.             widthValue = preferencesService.getIntPref(width);
  647.         }
  648.         else
  649.         {
  650.             widthValue = null;
  651.         }
  652.  
  653.         // If the height is set
  654.         if(typeof webdeveloper_optionsDataInteger[height] != "undefined")
  655.         {
  656.             heightValue = webdeveloper_optionsDataInteger[height];
  657.         }
  658.         else if(preferencesService.prefHasUserValue(height))
  659.         {
  660.             heightValue = preferencesService.getIntPref(height);
  661.         }
  662.         else
  663.         {
  664.             heightValue = null;
  665.         }
  666.  
  667.         // If the description, width and height are set
  668.         if(descriptionValue && widthValue && heightValue)
  669.         {
  670.             listItem = pageDocument.createElement("listitem");
  671.  
  672.             listCell = pageDocument.createElement("listcell");
  673.             listCell.setAttribute("label", descriptionValue);
  674.             listItem.appendChild(listCell);
  675.  
  676.             listCell = pageDocument.createElement("listcell");
  677.             listCell.setAttribute("label", widthValue);
  678.             listItem.appendChild(listCell);
  679.  
  680.             listCell = pageDocument.createElement("listcell");
  681.             listCell.setAttribute("label", heightValue);
  682.             listItem.appendChild(listCell);
  683.  
  684.             resizeBox.appendChild(listItem);
  685.         }
  686.     }
  687. }
  688.  
  689. // Initializes the sidebar page
  690. function webdeveloper_initializeSidebar()
  691. {
  692.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  693.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  694.  
  695.     // If the edit CSS font preference is set
  696.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.edit.css.font"] != "undefined")
  697.     {
  698.         pageDocument.getElementById("webdeveloper.edit.css.font").value = webdeveloper_optionsDataInteger["webdeveloper.edit.css.font"];
  699.     }
  700.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.font"))
  701.     {
  702.         pageDocument.getElementById("webdeveloper.edit.css.font").value = preferencesService.getIntPref("webdeveloper.edit.css.font");
  703.     }
  704.  
  705.     // If the edit CSS wrap preference is set
  706.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.edit.css.wrap"] != "undefined")
  707.     {
  708.         pageDocument.getElementById("webdeveloper.edit.css.wrap").checked = webdeveloper_optionsDataBoolean["webdeveloper.edit.css.wrap"];
  709.     }
  710.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.wrap"))
  711.     {
  712.         pageDocument.getElementById("webdeveloper.edit.css.wrap").checked = preferencesService.getBoolPref("webdeveloper.edit.css.wrap");
  713.     }
  714.  
  715.     // If the edit CSS text color is set
  716.     if(typeof webdeveloper_optionsDataString["webdeveloper.edit.css.color.text"] != "undefined")
  717.     {
  718.         pageDocument.getElementById("webdeveloper.edit.css.color.text").color = webdeveloper_optionsDataString["webdeveloper.edit.css.color.text"].trim();
  719.     }
  720.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.color.text"))
  721.     {
  722.         pageDocument.getElementById("webdeveloper.edit.css.color.text").color = preferencesService.getComplexValue("webdeveloper.edit.css.color.text", Components.interfaces.nsISupportsString).data.trim();
  723.     }
  724.  
  725.     // If the edit CSS background color is set
  726.     if(typeof webdeveloper_optionsDataString["webdeveloper.edit.css.color.background"] != "undefined")
  727.     {
  728.         pageDocument.getElementById("webdeveloper.edit.css.color.background").color = webdeveloper_optionsDataString["webdeveloper.edit.css.color.background"].trim();
  729.     }
  730.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.color.background"))
  731.     {
  732.         pageDocument.getElementById("webdeveloper.edit.css.color.background").color = preferencesService.getComplexValue("webdeveloper.edit.css.color.background", Components.interfaces.nsISupportsString).data.trim();
  733.     }
  734.  
  735.     // If the edit CSS update frequency preference is set
  736.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"] != "undefined")
  737.     {
  738.         pageDocument.getElementById("webdeveloper.edit.css.update.frequency").value = webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"];
  739.     }
  740.     else if(preferencesService.prefHasUserValue("webdeveloper.edit.css.update.frequency"))
  741.     {
  742.         pageDocument.getElementById("webdeveloper.edit.css.update.frequency").value = preferencesService.getIntPref("webdeveloper.edit.css.update.frequency");
  743.     }
  744.  
  745.     // If the view style information sidebar preference is set
  746.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.view.style.information.sidebar"] != "undefined")
  747.     {
  748.         pageDocument.getElementById("webdeveloper.view.style.information.sidebar").checked = webdeveloper_optionsDataBoolean["webdeveloper.view.style.information.sidebar"];
  749.     }
  750.     else if(preferencesService.prefHasUserValue("webdeveloper.view.style.information.sidebar"))
  751.     {
  752.         pageDocument.getElementById("webdeveloper.view.style.information.sidebar").checked = preferencesService.getBoolPref("webdeveloper.view.style.information.sidebar");
  753.     }
  754. }
  755.  
  756. // Initializes the tidied HTML page
  757. function webdeveloper_initializeTidiedHTML()
  758. {
  759.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  760.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  761.  
  762.     // If the close <br> preference is set
  763.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.close.br"] != "undefined")
  764.     {
  765.         pageDocument.getElementById("webdeveloper.tidied.html.close.br").checked = webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.close.br"];
  766.     }
  767.     else if(preferencesService.prefHasUserValue("webdeveloper.tidied.html.close.br"))
  768.     {
  769.         pageDocument.getElementById("webdeveloper.tidied.html.close.br").checked = preferencesService.getBoolPref("webdeveloper.tidied.html.close.br");
  770.     }
  771.  
  772.     // If the escape ampersand preference is set
  773.     if(typeof webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.escape.ampersand"] != "undefined")
  774.     {
  775.         pageDocument.getElementById("webdeveloper.tidied.html.escape.ampersand").checked = webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.escape.ampersand"];
  776.     }
  777.     else if(preferencesService.prefHasUserValue("webdeveloper.tidied.html.escape.ampersand"))
  778.     {
  779.         pageDocument.getElementById("webdeveloper.tidied.html.escape.ampersand").checked = preferencesService.getBoolPref("webdeveloper.tidied.html.escape.ampersand");
  780.     }
  781. }
  782.  
  783. // Initializes the tools page
  784. function webdeveloper_initializeTools()
  785. {
  786.     const pageDocument       = document.getElementById("webdeveloper-options-iframe").contentDocument;
  787.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  788.     const toolBox            = pageDocument.getElementById("webdeveloper-listbox");
  789.  
  790.     var description      = null;
  791.     var descriptionValue = null;
  792.     var key              = null;
  793.     var keyValue         = null;
  794.     var listCell         = null;
  795.     var listItem         = null;
  796.     var toolCount        = 0;
  797.     var url              = null;
  798.     var urlValue         = null;
  799.  
  800.     // If the tool count preference is set
  801.     if(typeof webdeveloper_optionsDataInteger["webdeveloper.tool.count"] != "undefined")
  802.     {
  803.         toolCount = webdeveloper_optionsDataInteger["webdeveloper.tool.count"];
  804.     }
  805.     else if(preferencesService.prefHasUserValue("webdeveloper.tool.count"))
  806.     {
  807.         toolCount = preferencesService.getIntPref("webdeveloper.tool.count");
  808.     }
  809.  
  810.     // Loop through the possible tools
  811.     for(var i = 1; i <= toolCount; i++)
  812.     {
  813.         description = "webdeveloper.tool." + i + ".description";
  814.         key         = "webdeveloper.tool." + i + ".key";
  815.         url         = "webdeveloper.tool." + i + ".url";
  816.  
  817.         // If the description is set
  818.         if(typeof webdeveloper_optionsDataString[description] != "undefined")
  819.         {
  820.             descriptionValue = webdeveloper_optionsDataString[description].trim();
  821.         }
  822.         else if(preferencesService.prefHasUserValue(description))
  823.         {
  824.             descriptionValue = preferencesService.getComplexValue(description, Components.interfaces.nsISupportsString).data.trim();
  825.         }
  826.         else
  827.         {
  828.             descriptionValue = null;
  829.         }
  830.  
  831.         // If the key is set
  832.         if(typeof webdeveloper_optionsDataString[key] != "undefined")
  833.         {
  834.             keyValue = webdeveloper_optionsDataString[key].trim();
  835.         }
  836.         else if(preferencesService.prefHasUserValue(key))
  837.         {
  838.             keyValue = preferencesService.getComplexValue(key, Components.interfaces.nsISupportsString).data.trim();
  839.         }
  840.         else
  841.         {
  842.             keyValue = null;
  843.         }
  844.  
  845.         // If the URL is set
  846.         if(typeof webdeveloper_optionsDataString[url] != "undefined")
  847.         {
  848.             urlValue = webdeveloper_optionsDataString[url].trim();
  849.         }
  850.         else if(preferencesService.prefHasUserValue(url))
  851.         {
  852.             urlValue = preferencesService.getComplexValue(url, Components.interfaces.nsISupportsString).data.trim();
  853.         }
  854.         else
  855.         {
  856.             urlValue = null;
  857.         }
  858.  
  859.         // If the description and URL are set
  860.         if(descriptionValue && urlValue)
  861.         {
  862.             listItem = pageDocument.createElement("listitem");
  863.  
  864.             listCell = pageDocument.createElement("listcell");
  865.             listCell.setAttribute("label", descriptionValue);
  866.             listItem.appendChild(listCell);
  867.  
  868.             listCell = pageDocument.createElement("listcell");
  869.             listCell.setAttribute("label", urlValue);
  870.             listCell.setAttribute("crop", "end");
  871.             listItem.appendChild(listCell);
  872.  
  873.             listCell = pageDocument.createElement("listcell");
  874.  
  875.             // If the key is set
  876.             if(keyValue)
  877.             {
  878.                 listCell.setAttribute("label", keyValue);
  879.             }
  880.  
  881.             listItem.appendChild(listCell);
  882.  
  883.             toolBox.appendChild(listItem);
  884.        }
  885.     }
  886. }
  887.  
  888. // Moves the selected item down
  889. function webdeveloper_moveDown()
  890. {
  891.     const pageDocument  = document.getElementById("webdeveloper-options-iframe").contentDocument;
  892.     const resizeBox     = pageDocument.getElementById("webdeveloper-listbox");
  893.     const resizeCount   = resizeBox.getRowCount();
  894.     const selectedIndex = resizeBox.selectedIndex;
  895.     const selectedItem  = resizeBox.selectedItem;
  896.  
  897.     // If an item is selected and it is not at the bottom
  898.     if(selectedItem && selectedIndex != resizeCount - 1)
  899.     {
  900.         resizeBox.selectItem(resizeBox.insertBefore(selectedItem, resizeBox.getNextItem(selectedItem, 2)));
  901.     }
  902. }
  903.  
  904. // Moves the selected item up
  905. function webdeveloper_moveUp()
  906. {
  907.     const pageDocument  = document.getElementById("webdeveloper-options-iframe").contentDocument;
  908.     const resizeBox     = pageDocument.getElementById("webdeveloper-listbox");
  909.     const selectedIndex = resizeBox.selectedIndex;
  910.     const selectedItem  = resizeBox.selectedItem;
  911.  
  912.     // If an item is selected and it is not at the top
  913.     if(selectedItem && selectedIndex != 0)
  914.     {
  915.         resizeBox.selectItem(resizeBox.insertBefore(selectedItem, resizeBox.getPreviousItem(selectedItem, 1)));
  916.     }
  917. }
  918.  
  919. // Resets the user's options
  920. function webdeveloper_resetOptions()
  921. {
  922.     const stringBundle = document.getElementById("webdeveloper-string-bundle");
  923.  
  924.     // If the reset is confirmed
  925.     if(confirm(stringBundle.getString("webdeveloper_resetConfirmation")))
  926.     {
  927.         const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  928.  
  929.         webdeveloper_localizedOptionsSetup = false;
  930.         webdeveloper_optionsDataBoolean    = new Array();
  931.         webdeveloper_optionsDataInteger    = new Array();
  932.         webdeveloper_optionsDataString     = new Array();
  933.  
  934.         preferencesService.deleteBranch("webdeveloper.");
  935.  
  936.         webdeveloper_configureKeyboardShortcuts(true);
  937.         webdeveloper_setupDefaultOptions();
  938.         webdeveloper_setupLocalizedOptions();
  939.         webdeveloper_initializeOptions();
  940.     }
  941. }
  942.  
  943. // Saves the user's options
  944. function webdeveloper_saveOptions()
  945. {
  946.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  947.     const string             = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  948.  
  949.     var parentWindow = null;
  950.     var option       = null;
  951.     var optionValue  = null;
  952.  
  953.     // Make sure current page is stored
  954.     webdeveloper_storeOptions();
  955.  
  956.     // Loop through the boolean options
  957.     for(option in webdeveloper_optionsDataBoolean)
  958.     {
  959.         preferencesService.setBoolPref(option, webdeveloper_optionsDataBoolean[option]);
  960.     }
  961.  
  962.     // Loop through the integer options
  963.     for(option in webdeveloper_optionsDataInteger)
  964.     {
  965.         optionValue = webdeveloper_optionsDataInteger[option];
  966.  
  967.         // If the option value is set
  968.         if(optionValue)
  969.         {
  970.             preferencesService.setIntPref(option, optionValue);
  971.         }
  972.         else if(preferencesService.prefHasUserValue(option))
  973.         {
  974.             preferencesService.clearUserPref(option);
  975.         }
  976.     }
  977.  
  978.     // Loop through the string options
  979.     for(option in webdeveloper_optionsDataString)
  980.     {
  981.         optionValue = webdeveloper_optionsDataString[option];
  982.  
  983.         // If the option value is set or the preference currently has a value
  984.         if(optionValue || preferencesService.prefHasUserValue(option))
  985.         {
  986.             string.data = optionValue;
  987.  
  988.             preferencesService.setComplexValue(option, Components.interfaces.nsISupportsString, string);
  989.         }
  990.     }
  991. }
  992.  
  993. // Stores the user's options to be saved later
  994. function webdeveloper_storeOptions()
  995. {
  996.     const iFrame             = document.getElementById("webdeveloper-options-iframe");
  997.     const iFrameSrc          = iFrame.getAttribute("src");
  998.     const pageDocument       = iFrame.contentDocument;
  999.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  1000.  
  1001.     var childNodes  = null;
  1002.     var description = null;
  1003.     var i           = 0;
  1004.     var listItem    = null;
  1005.  
  1006.     // If this is the colors page
  1007.     if(iFrameSrc.indexOf("colors") != -1)
  1008.     {
  1009.         webdeveloper_optionsDataString["webdeveloper.color.class.background"]           = pageDocument.getElementById("webdeveloper.color.class.background").color;
  1010.         webdeveloper_optionsDataString["webdeveloper.color.class.text"]                 = pageDocument.getElementById("webdeveloper.color.class.text").color;
  1011.         webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.background"] = pageDocument.getElementById("webdeveloper.color.feature.tooltip.background").color;
  1012.         webdeveloper_optionsDataString["webdeveloper.color.feature.tooltip.text"]       = pageDocument.getElementById("webdeveloper.color.feature.tooltip.text").color;
  1013.         webdeveloper_optionsDataString["webdeveloper.color.id.background"]              = pageDocument.getElementById("webdeveloper.color.id.background").color;
  1014.         webdeveloper_optionsDataString["webdeveloper.color.id.class.background"]        = pageDocument.getElementById("webdeveloper.color.id.class.background").color;
  1015.         webdeveloper_optionsDataString["webdeveloper.color.id.class.text"]              = pageDocument.getElementById("webdeveloper.color.id.class.text").color;
  1016.         webdeveloper_optionsDataString["webdeveloper.color.id.text"]                    = pageDocument.getElementById("webdeveloper.color.id.text").color;
  1017.         webdeveloper_optionsDataString["webdeveloper.feature.tooltip.opacity"]          = pageDocument.getElementById("webdeveloper.feature.tooltip.opacity").value;
  1018.     }
  1019.     else if(iFrameSrc.indexOf("forms") != -1)
  1020.     {
  1021.         webdeveloper_optionsDataString["webdeveloper.populate.form.fields.email"] = pageDocument.getElementById("webdeveloper.populate.form.fields.email").value;
  1022.     }
  1023.     else if(iFrameSrc.indexOf("general") != -1)
  1024.     {
  1025.         webdeveloper_optionsDataBoolean["webdeveloper.context.hide"]               = pageDocument.getElementById("webdeveloper.context.hide").checked;
  1026.         webdeveloper_optionsDataBoolean["webdeveloper.menu.hide"]                  = pageDocument.getElementById("webdeveloper.menu.hide").checked;
  1027.         webdeveloper_optionsDataBoolean["webdeveloper.open.tabs"]                  = pageDocument.getElementById("webdeveloper.open.tabs").checked;
  1028.         webdeveloper_optionsDataBoolean["webdeveloper.open.tabs.background"]       = pageDocument.getElementById("webdeveloper.open.tabs.background").checked;
  1029.         webdeveloper_optionsDataBoolean["webdeveloper.outline.show.element.names"] = pageDocument.getElementById("webdeveloper.outline.show.element.names").checked;
  1030.         webdeveloper_optionsDataBoolean["webdeveloper.view.source.tab"]            = pageDocument.getElementById("webdeveloper.view.source.tab").checked;
  1031.         webdeveloper_optionsDataString["webdeveloper.toolbar.icons"]               = pageDocument.getElementById("webdeveloper.toolbar.icons").value;
  1032.     }
  1033.     else if(iFrameSrc.indexOf("javascript") != -1)
  1034.     {
  1035.         webdeveloper_optionsDataBoolean["javascript.options.strict"]                    = pageDocument.getElementById("webdeveloper.javascript.options.strict").checked;
  1036.         webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.warning"] = pageDocument.getElementById("webdeveloper.open.javascript.console.warning").checked;
  1037.         webdeveloper_optionsDataBoolean["webdeveloper.open.javascript.console.error"]   = pageDocument.getElementById("webdeveloper.open.javascript.console.error").checked;
  1038.     }
  1039.     else if(iFrameSrc.indexOf("keys") != -1)
  1040.     {
  1041.         const textBoxes = pageDocument.getElementById("webdeveloper-key-rows").getElementsByTagName("textbox");
  1042.  
  1043.         var textbox = null;
  1044.  
  1045.         // Loop through the text boxes
  1046.         for(i = 0; i < textBoxes.length; i++)
  1047.         {
  1048.             textbox = textBoxes.item(i);
  1049.  
  1050.             webdeveloper_optionsDataString[textbox.getAttribute("id")] = textbox.value.trim();
  1051.         }
  1052.     }
  1053.     else if(iFrameSrc.indexOf("resize") != -1)
  1054.     {
  1055.         const resizeBox = pageDocument.getElementById("webdeveloper-listbox");
  1056.  
  1057.         var height      = null;
  1058.         var resizeCount = 0;
  1059.         var width       = null;
  1060.  
  1061.         // If the resize count preference is set
  1062.         if(preferencesService.prefHasUserValue("webdeveloper.resize.count"))
  1063.         {
  1064.             resizeCount = preferencesService.getIntPref("webdeveloper.resize.count");
  1065.         }
  1066.  
  1067.         // Loop through the previous resize options
  1068.         for(i = 1; i <= resizeCount; i++)
  1069.         {
  1070.             description = "webdeveloper.resize." + i + ".description";
  1071.             height      = "webdeveloper.resize." + i + ".height";
  1072.             width       = "webdeveloper.resize." + i + ".width";
  1073.  
  1074.             webdeveloper_optionsDataInteger[height]     = "";
  1075.             webdeveloper_optionsDataInteger[width]      = "";
  1076.             webdeveloper_optionsDataString[description] = "";
  1077.         }
  1078.  
  1079.         resizeCount = resizeBox.getRowCount();
  1080.  
  1081.         // Loop through the possible resize options
  1082.         for(i = 1; i <= resizeCount; i++)
  1083.         {
  1084.             description = "webdeveloper.resize." + i + ".description";
  1085.             height      = "webdeveloper.resize." + i + ".height";
  1086.             listItem    = resizeBox.getItemAtIndex(i - 1);
  1087.             childNodes  = listItem.childNodes;
  1088.             width       = "webdeveloper.resize." + i + ".width";
  1089.  
  1090.             webdeveloper_optionsDataInteger[width]      = listItem.childNodes[1].getAttribute("label");
  1091.             webdeveloper_optionsDataInteger[height]     = listItem.childNodes[2].getAttribute("label");
  1092.             webdeveloper_optionsDataString[description] = listItem.childNodes[0].getAttribute("label").trim();
  1093.         }
  1094.  
  1095.         webdeveloper_optionsDataInteger["webdeveloper.resize.count"] = resizeCount;
  1096.     }
  1097.     else if(iFrameSrc.indexOf("sidebar") != -1)
  1098.     {
  1099.         var updateFrequency = pageDocument.getElementById("webdeveloper.edit.css.update.frequency").value;
  1100.  
  1101.         webdeveloper_optionsDataBoolean["webdeveloper.edit.css.wrap"]                  = pageDocument.getElementById("webdeveloper.edit.css.wrap").checked;
  1102.         webdeveloper_optionsDataBoolean["webdeveloper.view.style.information.sidebar"] = pageDocument.getElementById("webdeveloper.view.style.information.sidebar").checked;
  1103.         webdeveloper_optionsDataInteger["webdeveloper.edit.css.font"]                  = pageDocument.getElementById("webdeveloper.edit.css.font").value;
  1104.         webdeveloper_optionsDataString["webdeveloper.edit.css.color.background"]       = pageDocument.getElementById("webdeveloper.edit.css.color.background").color;
  1105.         webdeveloper_optionsDataString["webdeveloper.edit.css.color.text"]             = pageDocument.getElementById("webdeveloper.edit.css.color.text").color;
  1106.  
  1107.         // If the update frequency is set and is a valid integer and is positive
  1108.         if(updateFrequency && parseInt(updateFrequency) == updateFrequency && updateFrequency >= 0)
  1109.         {
  1110.             webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"] = updateFrequency;
  1111.         }
  1112.         else
  1113.         {
  1114.             webdeveloper_optionsDataInteger["webdeveloper.edit.css.update.frequency"] = 0;
  1115.         }
  1116.     }
  1117.     else if(iFrameSrc.indexOf("tidied_html") != -1)
  1118.     {
  1119.         webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.close.br"]         = pageDocument.getElementById("webdeveloper.tidied.html.close.br").checked;
  1120.         webdeveloper_optionsDataBoolean["webdeveloper.tidied.html.escape.ampersand"] = pageDocument.getElementById("webdeveloper.tidied.html.escape.ampersand").checked;
  1121.     }
  1122.     else if(iFrameSrc.indexOf("tools") != -1)
  1123.     {
  1124.         const toolBox = pageDocument.getElementById("webdeveloper-listbox");
  1125.  
  1126.         var key       = null;
  1127.         var toolCount = 0;
  1128.         var url       = null;
  1129.  
  1130.         // If the tool count preference is set
  1131.         if(preferencesService.prefHasUserValue("webdeveloper.tool.count"))
  1132.         {
  1133.             toolCount = preferencesService.getIntPref("webdeveloper.tool.count");
  1134.         }
  1135.  
  1136.         // Loop through the previous tools
  1137.         for(i = 1; i <= toolCount; i++)
  1138.         {
  1139.             description = "webdeveloper.tool." + i + ".description";
  1140.             key         = "webdeveloper.tool." + i + ".key";
  1141.             url         = "webdeveloper.tool." + i + ".url";
  1142.  
  1143.             webdeveloper_optionsDataString[description] = "";
  1144.             webdeveloper_optionsDataString[key]         = "";
  1145.             webdeveloper_optionsDataString[url]         = "";
  1146.         }
  1147.  
  1148.         toolCount = toolBox.getRowCount();
  1149.  
  1150.         // Loop through the possible tools
  1151.         for(i = 1; i <= toolCount; i++)
  1152.         {
  1153.             description = "webdeveloper.tool." + i + ".description";
  1154.             listItem    = toolBox.getItemAtIndex(i - 1);
  1155.             childNodes  = listItem.childNodes;
  1156.             key         = "webdeveloper.tool." + i + ".key";
  1157.             url         = "webdeveloper.tool." + i + ".url";
  1158.  
  1159.             webdeveloper_optionsDataString[description] = listItem.childNodes[0].getAttribute("label").trim();
  1160.             webdeveloper_optionsDataString[key]         = listItem.childNodes[2].getAttribute("label").trim();
  1161.             webdeveloper_optionsDataString[url]         = listItem.childNodes[1].getAttribute("label").trim();
  1162.         }
  1163.  
  1164.         webdeveloper_optionsDataInteger["webdeveloper.tool.count"] = toolCount;
  1165.     }
  1166. }
  1167.  
  1168. // Updates the tab option status
  1169. function webdeveloper_updateTabOptionStatus()
  1170. {
  1171.     const pageDocument = document.getElementById("webdeveloper-options-iframe").contentDocument;
  1172.  
  1173.     var disabled = false;
  1174.  
  1175.     // If open tabs is checked
  1176.     if(pageDocument.getElementById("webdeveloper.open.tabs").checked)
  1177.     {
  1178.         disabled = true;
  1179.     }
  1180.  
  1181.     pageDocument.getElementById("webdeveloper.open.tabs.background").disabled = disabled;
  1182. }